home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1990-06-15 | 2.6 KB | [TEXT/MPS ] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
10%
| dexvert
| Jesper Olsen Module (music/jesperOlsen)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, Fri Jun 15 13:07:44 1990, modified Fri Jun 15 13:07:44 1990, creator 'MPS ', type ASCII, 2066 bytes "drvr.c" , at 0x892 382 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
49%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
33%
| TrID
| TTComp archive compressed (bin-4K)
| default (weak)
| |
16%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MPS ] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 06 64 72 76 72 2e 63 | 00 00 00 00 00 00 00 00 |..drvr.c|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 00 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 08 12 00 | 00 01 7e a2 9e c6 60 a2 |........|..~...`.|
|00000060| 9e c6 60 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |..`.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 af 4f 00 00 |........|.....O..|
|00000080| 65 61 6d 20 3b 0d 09 69 | 6e 74 09 63 6f 75 6e 74 |eam ;..i|nt.count|
|00000090| 20 3b 0d 09 63 68 61 72 | 09 6c 69 6e 65 5b 4d 41 | ;..char|.line[MA|
|000000a0| 58 4c 49 4e 45 5d 20 3b | 0d 23 69 66 64 65 66 20 |XLINE] ;|.#ifdef |
|000000b0| 44 45 42 55 47 0d 09 69 | 6e 74 20 69 20 3b 0d 09 |DEBUG..i|nt i ;..|
|000000c0| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |fprintf(|stderr, |
|000000d0| 22 67 65 74 5f 65 78 70 | 72 20 65 6e 74 65 72 65 |"get_exp|r entere|
|000000e0| 64 2e 5c 6e 22 29 20 3b | 0d 23 65 6e 64 69 66 0d |d.\n") ;|.#endif.|
|000000f0| 09 63 6f 75 6e 74 20 3d | 20 30 20 3b 0d 09 69 66 |.count =| 0 ;..if|
|00000100| 28 66 66 6c 61 67 29 0d | 09 7b 0d 23 69 66 64 65 |(fflag).|.{.#ifde|
|00000110| 66 09 44 45 42 55 47 0d | 09 09 66 70 72 69 6e 74 |f.DEBUG.|..fprint|
|00000120| 66 28 73 74 64 65 72 72 | 2c 20 22 66 66 6c 61 67 |f(stderr|, "fflag|
|00000130| 20 74 72 75 65 20 69 6e | 20 67 65 74 5f 65 78 70 | true in| get_exp|
|00000140| 72 5c 6e 22 29 20 3b 0d | 23 65 6e 64 69 66 0d 09 |r\n") ;.|#endif..|
|00000150| 09 69 66 28 28 73 74 72 | 65 61 6d 20 3d 20 66 6f |.if((str|eam = fo|
|00000160| 70 65 6e 28 2a 64 65 66 | 65 78 70 72 2c 20 22 72 |pen(*def|expr, "r|
|00000170| 22 29 29 20 3d 3d 20 4e | 55 4c 4c 29 0d 09 09 7b |")) == N|ULL)...{|
|00000180| 0d 09 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |....fpri|ntf(stde|
|00000190| 72 72 2c 20 22 43 61 6e | 27 74 20 6f 70 65 6e 20 |rr, "Can|'t open |
|000001a0| 25 73 5c 6e 22 2c 20 2a | 64 65 66 65 78 70 72 29 |%s\n", *|defexpr)|
|000001b0| 20 3b 0d 09 09 09 61 62 | 6f 72 74 28 29 20 3b 0d | ;....ab|ort() ;.|
|000001c0| 09 09 7d 0d 09 09 77 68 | 69 6c 65 28 28 6d 61 78 |..}...wh|ile((max|
|000001d0| 20 2d 20 63 6f 75 6e 74 | 29 20 26 26 20 66 67 65 | - count|) && fge|
|000001e0| 74 73 28 6c 69 6e 65 2c | 20 4d 41 58 4c 49 4e 45 |ts(line,| MAXLINE|
|000001f0| 2c 20 73 74 72 65 61 6d | 29 29 0d 09 09 7b 0d 09 |, stream|))...{..|
|00000200| 09 09 63 6f 75 6e 74 20 | 2b 3d 20 64 6f 5f 6f 72 |..count |+= do_or|
|00000210| 28 6c 69 6e 65 2c 20 26 | 65 78 70 72 5b 63 6f 75 |(line, &|expr[cou|
|00000220| 6e 74 5d 2c 20 6d 61 78 | 20 2d 20 63 6f 75 6e 74 |nt], max| - count|
|00000230| 29 20 3b 0d 23 69 66 64 | 65 66 09 44 45 42 55 47 |) ;.#ifd|ef.DEBUG|
|00000240| 0d 09 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |....fpri|ntf(stde|
|00000250| 72 72 2c 20 22 43 6f 75 | 6e 74 20 3d 20 25 64 5c |rr, "Cou|nt = %d\|
|00000260| 6e 22 2c 20 63 6f 75 6e | 74 29 20 3b 0d 23 65 6e |n", coun|t) ;.#en|
|00000270| 64 69 66 0d 09 09 7d 0d | 09 09 66 63 6c 6f 73 65 |dif...}.|..fclose|
|00000280| 28 73 74 72 65 61 6d 29 | 20 3b 0d 09 7d 0d 09 65 |(stream)| ;..}..e|
|00000290| 6c 73 65 0d 09 7b 0d 09 | 09 69 66 28 63 6f 75 6e |lse..{..|.if(coun|
|000002a0| 74 20 2b 3d 20 64 6f 5f | 6f 72 28 2a 64 65 66 65 |t += do_|or(*defe|
|000002b0| 78 70 72 2c 20 26 65 78 | 70 72 5b 63 6f 75 6e 74 |xpr, &ex|pr[count|
|000002c0| 5d 2c 20 6d 61 78 20 2d | 20 63 6f 75 6e 74 29 29 |], max -| count))|
|000002d0| 0d 09 09 09 2a 64 65 66 | 65 78 70 72 20 3d 20 22 |....*def|expr = "|
|000002e0| 20 22 20 3b 0d 09 7d 0d | 23 69 66 64 65 66 20 44 | " ;..}.|#ifdef D|
|000002f0| 45 42 55 47 0d 09 66 6f | 72 28 69 3d 63 6f 75 6e |EBUG..fo|r(i=coun|
|00000300| 74 3b 20 2d 2d 69 20 3e | 3d 20 30 3b 20 29 0d 09 |t; --i >|= 0; )..|
|00000310| 7b 0d 09 09 70 72 5f 74 | 6f 6b 28 65 78 70 72 5b |{...pr_t|ok(expr[|
|00000320| 69 5d 29 20 3b 0d 09 09 | 70 72 69 6e 74 66 28 22 |i]) ;...|printf("|
|00000330| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000340| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000350| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 5c 6e |--------|------\n|
|00000360| 22 29 20 3b 0d 09 7d 0d | 23 65 6e 64 69 66 0d 09 |") ;..}.|#endif..|
|00000370| 72 65 74 75 72 6e 28 63 | 6f 75 6e 74 29 20 3b 0d |return(c|ount) ;.|
|00000380| 7d 0d 0d 0d 0d 0d 63 6e | 74 72 6c 5f 63 28 29 0d |}.....cn|trl_c().|
|00000390| 7b 0d 23 69 66 64 65 66 | 20 43 50 4d 0d 09 69 66 |{.#ifdef| CPM..if|
|000003a0| 28 62 64 6f 73 28 31 31 | 29 20 26 26 20 28 28 62 |(bdos(11|) && ((b|
|000003b0| 64 6f 73 28 31 2c 30 29 | 20 26 20 6f 78 37 66 29 |dos(1,0)| & ox7f)|
|000003c0| 20 3d 3d 20 30 78 30 33 | 29 29 0d 09 09 61 62 6f | == 0x03|))...abo|
|000003d0| 72 74 28 29 20 3b 0d 23 | 65 6e 64 69 66 0d 23 69 |rt() ;.#|endif.#i|
|000003e0| 66 64 65 66 09 44 45 42 | 55 47 0d 09 66 70 72 69 |fdef.DEB|UG..fpri|
|000003f0| 6e 74 66 28 73 74 64 65 | 72 72 2c 20 22 63 6e 74 |ntf(stde|rr, "cnt|
|00000400| 72 6c 5f 63 20 65 6e 74 | 65 72 65 64 2e 5c 6e 22 |rl_c ent|ered.\n"|
|00000410| 29 20 3b 0d 23 65 6e 64 | 69 66 0d 7d 00 00 01 00 |) ;.#end|if.}....|
|00000420| 00 00 01 4c 00 00 00 4c | 00 00 00 32 01 be 70 01 |...L...L|...2..p.|
|00000430| b0 87 64 10 20 2c 00 18 | 72 30 d0 81 16 c0 53 87 |..d. ,..|r0....S.|
|00000440| 60 00 01 84 70 00 60 00 | 01 a2 70 02 07 54 6f 6f |`...p.`.|..p..Too|
|00000450| 6c 73 2e 63 02 00 00 00 | 54 45 58 54 4d 50 53 20 |ls.c....|TEXTMPS |
|00000460| 00 00 00 00 00 00 00 00 | 00 00 9f 65 00 00 54 45 |........|...e..TE|
|00000470| 58 54 4d 50 53 20 00 00 | 00 00 00 00 00 00 00 00 |XTMPS ..|........|
|00000480| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 a0 9f |........|........|
|00000490| 9e 3a 00 00 1e 93 00 00 | 01 7e 2b 6d 00 00 00 00 |.:......|.~+m....|
|000004a0| 2f 0c 4e ba 00 00 48 6d | 00 00 4e ba 00 00 2b 40 |/.N...Hm|..N...+@|
|000004b0| 00 00 be ad 00 00 50 8f | 63 1e 2f 2d 00 00 48 6d |......P.|c./-..Hm|
|000004c0| 00 00 2f 0b 4e ba 00 00 | d7 ed 00 00 9e ad 00 00 |../.N...|........|
|000004d0| 4f ef 00 0c 60 00 00 f0 | 70 00 60 00 01 0e 2b 6d |O...`...|p.`...+m|
|000004e0| 00 00 00 00 2f 0c 4e ba | 00 00 48 6d 00 00 4e ba |..../.N.|..Hm..N.|
|000004f0| 00 00 2b 40 00 00 be ad | 00 00 50 8f 63 1e 2f 2d |..+@....|..P.c./-|
|00000500| 00 00 48 6d 00 00 2f 0b | 4e ba 00 00 d7 ed 00 00 |..Hm../.|N.......|
|00000510| 9e ad 00 00 4f ef 00 0c | 60 00 00 ac 00 00 00 48 |....O...|`......H|
|00000520| 00 09 4d 6f 6e 61 63 6f | 00 75 64 65 09 3c 73 74 |..Monaco|.ude.<st|
|00000530| 64 69 6f 2e 68 3e 0d 23 | 69 6e 63 6c 75 64 65 09 |dio.h>.#|include.|
|00000540| 22 74 00 06 00 04 00 78 | 00 18 01 53 01 fd 00 78 |"t.....x|...S...x|
|00000550| 00 18 01 53 01 fd a1 de | 4e 52 00 00 1d 41 00 00 |...S....|NR...A..|
|00000560| 1d 82 00 00 1c e0 01 00 | 00 00 01 00 00 00 01 4c |........|.......L|
|00000570| 00 00 00 4c 00 00 00 32 | 00 02 d8 70 09 30 00 00 |...L...2|...p.0..|
|00000580| 00 1c 00 32 00 00 4d 50 | 53 52 00 00 00 0a 03 ed |...2..MP|SR......|
|00000590| ff ff 00 00 00 00 00 04 | 0f f6 2f 2a 20 54 4f 4f |........|../* TOO|
|000005a0| 4c 53 2e 43 3a 20 65 78 | 70 72 65 73 73 69 6f 6e |LS.C: ex|pression|
|000005b0| 20 70 61 72 73 65 72 20 | 75 73 65 64 20 62 79 20 | parser |used by |
|000005c0| 67 72 65 70 2e 20 2a 2f | 0d 0d 23 69 6e 63 6c 75 |grep. */|..#inclu|
|000005d0| 64 65 09 3c 73 74 64 69 | 6f 2e 68 3e 0d 23 69 6e |de.<stdi|o.h>.#in|
|000005e0| 63 6c 75 64 65 09 22 74 | 6f 6f 6c 73 2e 68 22 0d |clude."t|ools.h".|
|000005f0| 0d 2f 2a 20 4d 4a 53 3a | 20 54 68 69 73 20 66 75 |./* MJS:| This fu|
|00000600| 6e 63 74 69 6f 6e 20 72 | 65 74 75 72 6e 73 20 61 |nction r|eturns a|
|00000610| 20 63 68 61 72 20 70 6f | 69 6e 74 65 72 20 2a 2f | char po|inter */|
|00000620| 0d 63 68 61 72 20 2a 20 | 61 6d 61 74 63 68 28 6c |.char * |amatch(l|
|00000630| 69 6e 2c 70 61 74 2c 62 | 6f 6c 6e 29 0d 63 68 61 |in,pat,b|oln).cha|
|00000640| 72 09 2a 6c 69 6e 2c 20 | 2a 62 6f 6c 6e 20 3b 0d |r.*lin, |*boln ;.|
|00000650| 54 4f 4b 45 4e 09 2a 70 | 61 74 20 3b 0d 7b 0d 09 |TOKEN.*p|at ;.{..|
|00000660| 63 68 61 72 09 2a 62 6f | 63 6c 2c 20 2a 72 76 61 |char.*bo|cl, *rva|
|00000670| 6c 2c 20 2a 73 74 72 73 | 74 61 72 74 20 3b 0d 23 |l, *strs|tart ;.#|
|00000680| 69 66 64 65 66 09 44 45 | 42 55 47 0d 09 66 70 72 |ifdef.DE|BUG..fpr|
|00000690| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 61 6d |intf(std|err, "am|
|000006a0| 61 74 63 68 20 65 6e 74 | 65 72 65 64 5c 6e 22 29 |atch ent|ered\n")|
|000006b0| 20 3b 0d 23 65 6e 64 69 | 66 0d 09 69 66 20 28 70 | ;.#endi|f..if (p|
|000006c0| 61 74 3d 3d 30 29 0d 09 | 09 72 65 74 75 72 6e 28 |at==0)..|.return(|
|000006d0| 30 29 20 3b 0d 09 73 74 | 72 73 74 61 72 74 3d 6c |0) ;..st|rstart=l|
|000006e0| 69 6e 20 3b 0d 09 77 68 | 69 6c 65 28 70 61 74 29 |in ;..wh|ile(pat)|
|000006f0| 0d 09 7b 0d 09 09 69 66 | 28 70 61 74 2d 3e 74 6f |..{...if|(pat->to|
|00000700| 6b 20 3d 3d 20 43 4c 4f | 53 55 52 45 20 26 26 20 |k == CLO|SURE && |
|00000710| 70 61 74 2d 3e 6e 65 78 | 74 29 0d 09 09 7b 0d 09 |pat->nex|t)...{..|
|00000720| 09 09 70 61 74 20 3d 20 | 70 61 74 2d 3e 6e 65 78 |..pat = |pat->nex|
|00000730| 74 20 3b 0d 09 09 09 62 | 6f 63 6c 20 3d 20 6c 69 |t ;....b|ocl = li|
|00000740| 6e 20 3b 0d 09 09 09 77 | 68 69 6c 65 28 2a 6c 69 |n ;....w|hile(*li|
|00000750| 6e 20 26 26 20 6f 6d 61 | 74 63 68 28 26 6c 69 6e |n && oma|tch(&lin|
|00000760| 2c 20 70 61 74 29 29 20 | 20 3b 0d 09 09 09 69 66 |, pat)) | ;....if|
|00000770| 28 70 61 74 20 3d 20 70 | 61 74 2d 3e 6e 65 78 74 |(pat = p|at->next|
|00000780| 29 0d 09 09 09 7b 0d 09 | 09 09 09 77 68 69 6c 65 |)....{..|...while|
|00000790| 28 62 6f 63 6c 20 3c 3d | 20 6c 69 6e 29 0d 09 09 |(bocl <=| lin)...|
|000007a0| 09 09 7b 0d 09 09 09 09 | 09 69 66 28 72 76 61 6c |..{.....|.if(rval|
|000007b0| 20 3d 20 61 6d 61 74 63 | 68 28 6c 69 6e 2c 20 70 | = amatc|h(lin, p|
|000007c0| 61 74 2c 20 62 6f 6c 6e | 29 29 0d 09 09 09 09 09 |at, boln|))......|
|000007d0| 7b 0d 09 09 09 09 09 09 | 72 65 74 75 72 6e 28 72 |{.......|return(r|
|000007e0| 76 61 6c 29 20 3b 0d 09 | 09 09 09 09 7d 0d 09 09 |val) ;..|....}...|
|000007f0| 09 09 09 65 6c 73 65 0d | 09 09 09 09 09 09 2d 2d |...else.|......--|
|00000800| 6c 69 6e 20 3b 0d 09 09 | 09 09 7d 0d 09 09 09 09 |lin ;...|..}.....|
|00000810| 72 65 74 75 72 6e 28 30 | 29 20 3b 0d 09 09 09 7d |return(0|) ;....}|
|00000820| 0d 09 09 7d 0d 09 09 65 | 6c 73 65 20 69 66 28 6f |...}...e|lse if(o|
|00000830| 6d 61 74 63 68 28 26 6c | 69 6e 2c 20 70 61 74 2c |match(&l|in, pat,|
|00000840| 20 62 6f 6c 6e 29 29 0d | 09 09 7b 0d 09 09 09 70 | boln)).|..{....p|
|00000850| 61 74 3d 70 61 74 2d 3e | 6e 65 78 74 20 3b 0d 09 |at=pat->|next ;..|
|00000860| 09 7d 0d 09 09 65 6c 73 | 65 0d 09 09 7b 0d 09 09 |.}...els|e...{...|
|00000870| 09 72 65 74 75 72 6e 28 | 30 29 20 3b 0d 09 09 7d |.return(|0) ;...}|
|00000880| 0d 09 7d 0d 09 72 65 74 | 75 72 6e 28 6d 61 78 69 |..}..ret|urn(maxi|
|00000890| 6d 75 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |mu......|........|
|000008a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000008b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000008c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000008d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000008e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000008f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000900| 65 70 61 74 28 6c 70 2c | 20 4f 52 5f 53 59 4d 29 |epat(lp,| OR_SYM)|
|00000910| 29 29 0d 09 09 7b 0d 09 | 09 09 2a 65 78 70 72 2b |))...{..|..*expr+|
|00000920| 2b 20 3d 20 70 61 74 20 | 3b 0d 09 09 09 66 6f 75 |+ = pat |;....fou|
|00000930| 6e 64 2b 2b 20 3b 0d 09 | 09 7d 0d 09 09 6c 70 20 |nd++ ;..|.}...lp |
|00000940| 3d 20 2b 2b 6f 70 20 3b | 0d 09 09 69 66 28 70 61 |= ++op ;|...if(pa|
|00000950| 74 20 3d 3d 20 30 29 0d | 09 09 09 67 6f 74 6f 20 |t == 0).|...goto |
|00000960| 66 61 74 61 6c 5f 65 72 | 72 20 3b 0d 09 7d 0d 09 |fatal_er|r ;..}..|
|00000970| 69 66 28 66 6f 75 6e 64 | 20 3c 3d 20 6d 61 78 20 |if(found| <= max |
|00000980| 26 26 20 28 70 61 74 20 | 3d 20 6d 61 6b 65 70 61 |&& (pat |= makepa|
|00000990| 74 28 6c 70 2c 20 4f 52 | 5f 53 59 4d 29 29 29 0d |t(lp, OR|_SYM))).|
|000009a0| 09 7b 0d 09 09 66 6f 75 | 6e 64 2b 2b 20 3b 0d 09 |.{...fou|nd++ ;..|
|000009b0| 09 2a 65 78 70 72 20 3d | 20 70 61 74 20 3b 0d 09 |.*expr =| pat ;..|
|000009c0| 7d 0d 09 69 66 28 70 61 | 74 20 3d 3d 20 30 29 0d |}..if(pa|t == 0).|
|000009d0| 09 7b 0d 09 66 61 74 61 | 6c 5f 65 72 72 3a 0d 09 |.{..fata|l_err:..|
|000009e0| 09 09 70 72 69 6e 74 66 | 28 22 49 6c 6c 65 67 61 |..printf|("Illega|
|000009f0| 6c 20 65 78 70 72 65 73 | 73 69 6f 6e 5c 6e 22 29 |l expres|sion\n")|
|00000a00| 20 3b 0d 09 09 09 65 78 | 69 74 28 29 20 3b 0d 09 | ;....ex|it() ;..|
|00000a10| 7d 0d 09 72 65 74 75 72 | 6e 28 66 6f 75 6e 64 29 |}..retur|n(found)|
|00000a20| 20 3b 0d 7d 0d 0d 0d 0d | 0d 67 65 74 5f 65 78 70 | ;.}....|.get_exp|
|00000a30| 72 20 28 65 78 70 72 2c | 20 6d 61 78 2c 20 64 65 |r (expr,| max, de|
|00000a40| 66 65 78 70 72 29 0d 54 | 4f 4b 45 4e 09 2a 65 78 |fexpr).T|OKEN.*ex|
|00000a50| 70 72 5b 5d 20 3b 0d 69 | 6e 74 09 6d 61 78 20 3b |pr[] ;.i|nt.max ;|
|00000a60| 0d 63 68 61 72 09 2a 2a | 64 65 66 65 78 70 72 20 |.char.**|defexpr |
|00000a70| 3b 0d 7b 0d 09 46 49 4c | 45 09 2a 73 74 72 00 00 |;.{..FIL|E.*str..|
+--------+-------------------------+-------------------------+--------+--------+